package com.lp.guoguo.common.utils;


import org.apache.commons.lang3.RandomStringUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

@Component
public class NumberGenerator {

    @Value("${system.document.purchase-prefix:PO}")
    private String purchasePrefix;

    @Value("${system.document.sale-prefix:SO}")
    private String salePrefix;

    @Value("${system.document.transfer-prefix:TR}")
    private String transferPrefix;

    /**
     * 生成采购单号
     * @return 采购单号
     */
    public String generatePurchaseOrderNo() {
        return generateNumber(purchasePrefix);
    }

    /**
     * 生成销售单号
     * @return 销售单号
     */
    public String generateSaleOrderNo() {
        return generateNumber(salePrefix);
    }

    /**
     * 生成调拨单号
     * @return 调拨单号
     */
    public String generateTransferOrderNo() {
        return generateNumber(transferPrefix);
    }

    /**
     * 生成单号
     * @param prefix 前缀
     * @return 单号
     */
    private String generateNumber(String prefix) {
        // 格式：前缀 + 年月日 + 6位随机数
        String format = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMdd"));
        String s = RandomStringUtils.secure().randomNumeric(6);
        return prefix +
                format +
                s;
    }

}
